package modelo.Trayectoria;

import modelo.Orientacion.Direccion;
import modelo.Orientacion.Posicion;

public interface Direccionable {

    public void avanzar();
    /*PreCondicion: debe estar creado el objeto
      PostCondicion: si se puede avanzar, avanza y devuelve true, en caso
      contrario devuelve false*/

    public boolean avanzo();
    /*PreCondicion: debe estar creado el objeto
      PostCondicion: devuelve true si el direccionable avanzo, en caso
      contrario develve false*/

    public Posicion devolverPosicionActual();
    /*PreCondicion: debe estar creado el objeto
      PostCondicion: devuelve la posicion actual del Direccionable*/

    public boolean tienesFin();
    /*PreCondicion: debe estar creado el objeto
      PostCondicion: devuelve true si el objeto tiene una posicion final, en
      caso contrario devuelve false*/

    public abstract Direccion devolverDireccion();
    /*PreCondicion: debe estar creado el objeto
      PostCondicion: devuelve la direccion del Direccionable*/

}
